// import com.alibaba.druid.sql.ast.SQLArgument;
// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "OracleStatementImpl.h"

class OracleExecuteImmediateStatement : virtual public OracleStatementImpl
{
public:
  SQLExpr_ptr dynamicSql;

  SQLArgument_list_ptr arguments;

  SQLExpr_list_ptr into;

  SQLExpr_list_ptr returnInto;

  OracleExecuteImmediateStatement();

  OracleExecuteImmediateStatement(string_ptr dynamicSql);

  SHAREDOBJECT(OracleExecuteImmediateStatement);
  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  SQLObject_ptr clone();

  SQLExpr_ptr getDynamicSql();

  void setDynamicSql(SQLExpr_ptr dynamicSql);

  void setDynamicSql(string_ptr dynamicSql);

  SQLArgument_list_ptr getArguments();

  SQLExpr_list_ptr getInto();

  SQLExpr_list_ptr getReturnInto();
};
